Voici un premier exemple commenté d'un programme que j'ai réalisé avec Haskell. Cet exemple (très simple) nécessite néanmoins de connaître les bases du langage Haskell que je n'aborderais pas ici. Il est donc impératif d'avoir lu (ou du moins survolé) un tutoriel sur Haskell et de connaître la syntaxe générale de ce langage.
Lorsque j'ai débuté la rédaction de mon lexique de termes techniques, l'organisation des traductions s'est faite à l'aide du tableur d'open office. Tout naturellement, j'ai utilisé les macros d'open office afin de trier et d'exporter ces lignes de traductions sous la forme de commandes utilisables avec LaTeX.
Cependant, cette méthode était longue et laissait des doublons dans les listes de traductions. De plus, cette méthode ne permettait pas de regrouper les termes ayant le même sens sur la même ligne. Enfin, cette méthode nécessitait de ma part d'être très vigilant pendant l'exécution des macros.
Les lexiques étant en train d'augmenter en taille avec différentes versions, il était nécessaire de trouver une solution plus fiable, plus rapide et répondant parfaitement à mes exigences. Que faire ?
De nouvelles macros ? Trop complexe et encore plus lent.
Une base de donnée SQL ? Trop lourd à mettre en œuvre et ne résout pas tous les problèmes.
Un programme en C/C++ ? Oui, mais attention aux pointeurs, segfault, et autres réjouissances de la programmation bas niveau.
C'est alors qu'est venue la solution. Pourquoi ne pas utiliser ce beau langage de programmation que je suis en train d'apprendre ? Haskell
Tout d'abord un petit point sur ce qu'il faut réaliser comme programme
Le programme doit prendre en entrée un fichier texte formaté par le tableur et retourner en sortie un autre fichier texte contenant les commandes LaTeX des mots triés, classés, etc… pour l'intégrer dans le document final.
L'entrée sera un simple fichier texte délimité par un caractère spécifique (Autre que la virgule). Chaque ligne contient :
un code de regroupement : Pour regrouper les mots ayant le même sens.
un mot anglais.
un mot français.
3 domaines d'emploi : Ce nombre sera certainement modifié par la suite.
un numéro de version : Ce numéro sert à intégrer seulement les mots ayant un numéro inférieur ou égale à la version en court. (Cela permet d'équilibrer les chapitres).
un code d'intégration : Ce code permet d'intégrer ou non certains mots (Certains mots n'ayant pas été vérifiés, je ne souhaite pas les intégrer pour le moment).
Des options passées en ligne de commande pour effectuer les tâches souhaitées: Numéro de version, type de classement, langue de classement, …
Un fichier texte contenant les commandes LaTeX dans l'ordre de classement des mots à intégrer dans la version.
Maintenant que les besoins sont définis … il n'y a plus qu'à coder!